#ifndef DSPSIMULATOR_INSTRUCTION_ADDKPC_H
#define DSPSIMULATOR_INSTRUCTION_ADDKPC_H

#include "dspSimulator/targetMachine/dspInstruction.h"

namespace dspsimulator {
    class ADDKPC : public DspInstruction {
    public:
        explicit ADDKPC(u64 address = 0, u64 size = 4) :
                DspInstruction("ADDKPC", address, size) {}

        ADDKPC(const ADDKPC &) = default;

        ADDKPC(ADDKPC &&) = default;

        ADDKPC &operator=(const ADDKPC &) = default;

        ADDKPC &operator=(ADDKPC &&) = default;

        ~ADDKPC() override = default;

        void generate_ir(const std::shared_ptr<simulator::IRGenElement> &ir_gen_element) override;

        std::string to_string() const override;

        std::shared_ptr<Instruction> clone() const override;

    protected:
        std::shared_ptr<DspInstruction> decode_standard_instruction(const std::shared_ptr<DspInstructionInfo> &dsp_instruction_info) override;
    };
}
#endif //DSPSIMULATOR_INSTRUCTION_ADDKPC_H

